package fitnesshub.service;

import fitnesshub.pojo.dto.AddEquipmentDTO;
import fitnesshub.pojo.dto.EquipmentPageQueryDTO;
import fitnesshub.pojo.entity.Equipment;
import fitnesshub.result.PageResult;

public interface EquipmentService {
    /**
     * 设备分页查询
     *
     * @param equipmentPageQueryDTO 包含分页参数以及可选查询筛选条件的对象
     * @return PageResult对象，包含分页后的设备数据列表以及总记录数等分页相关信息
     */
    PageResult page(EquipmentPageQueryDTO equipmentPageQueryDTO);

    /**
     * 根据设备ID查询单个设备信息
     *
     * @param equipmentId 要查询的设备的唯一标识符（通常是数据库中的主键值）
     * @return Equipment对象，如果找到对应ID的设备，则返回该设备的详细信息实体；否则可能返回null（具体取决于实现逻辑）
     */
    Equipment getById(Integer equipmentId);

    /**
     * 新增设备
     *
     * @param addEquipmentDTO 包含要新增设备各项信息的数据传输对象
     */
    void addEquipment(AddEquipmentDTO addEquipmentDTO);

    /**
     * 编辑（更新）设备信息
     *
     * @param equipment 包含更新后设备信息的实体对象，通常其ID属性用于确定要更新的数据库记录
     */
    void editEquipment(Equipment equipment);

    /**
     * 根据设备ID删除设备记录
     *
     * @param equipmentId 要删除的设备的唯一标识符，用于从数据库中定位并删除对应的设备记录
     */
    void deleteById(Integer equipmentId);
}
